package models

import (
	"time"

	"gorm.io/gorm"
)

// 永远也不要管表的id，而是表的其他唯一标识字段

// Patient 存储患者的基本信息
// 患者表的唯一标识字段是患者身份证号码
type Patient struct {
	gorm.Model
	PatientId   uint      `gorm:"primary_key;auto_increment;not null" json:"patient_id"` // 患者ID
	PatientCode string    `gorm:"not null" json:"patient_code"`                          // 患者编码
	Name        string    `gorm:"type:varchar(100);not null" json:"name"`                // 患者姓名
	Gender      string    `gorm:"type:varchar(10);not null" json:"gender"`               // 患者性别
	DateOfBirth time.Time `gorm:"type:date;not null" json:"date_of_birth"`               // 患者出生日期
	// 身份证号码唯一 改成unique
	IdentificationNumber string `gorm:"type:varchar(50);not null;unique" json:"identification_number"` // 患者身份证号码
	ContactPhone         string `gorm:"type:varchar(20);not null" json:"contact_phone"`                // 患者联系电话
	ContactAddress       string `gorm:"type:varchar(200)" json:"contact_address"`                      // 患者联系地址
	Nationality          string `gorm:"type:varchar(50)" json:"nationality"`                           // 患者国籍
	Ethnicity            string `gorm:"type:varchar(50)" json:"ethnicity"`                             // 患者民族
	Religion             string `gorm:"type:varchar(50)" json:"religion"`                              // 患者宗教信仰
	EducationLevel       string `gorm:"type:varchar(50)" json:"education_level"`                       // 患者教育水平
	Degree               string `gorm:"type:varchar(50)" json:"degree"`                                // 患者学历
	OccupationCategory   string `gorm:"type:varchar(100)" json:"occupation_category"`                  // 患者职业类别
	WorkplaceName        string `gorm:"type:varchar(100)" json:"workplace_name"`                       // 患者工作单位名称
	WorkplacePhone       string `gorm:"type:varchar(20)" json:"workplace_phone"`                       // 患者工作单位电话
	WorkplaceAddress     string `gorm:"type:varchar(200)" json:"workplace_address"`                    // 患者工作单位地址
	DetailedAddress      string `gorm:"type:varchar(200)" json:"detailed_address"`                     // 患者详细地址
	MaritalStatus        string `gorm:"type:varchar(50)" json:"marital_status"`                        // 患者婚姻状况
	PlaceOfBirth         string `gorm:"type:varchar(100)" json:"place_of_birth"`                       // 患者出生地
	PlaceOfBirthDetail   string `gorm:"type:varchar(200)" json:"place_of_birth_detail"`                // 患者出生地详细地址
	PovertyLevel         string `gorm:"type:varchar(50)" json:"poverty_level"`                         // 患者贫困等级
	ContactPersonName    string `gorm:"type:varchar(100)" json:"contact_person_name"`                  // 患者联系人姓名
	ContactPersonPhone   string `gorm:"type:varchar(20)" json:"contact_person_phone"`                  // 患者联系人电话
	Hometown             string `gorm:"type:varchar(100)" json:"hometown"`                             // 患者户籍所在地
}
